home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_nn-tk.idb / usr / freeware / lib / nn / aux.z / aux
Encoding:
Text File  |  1999-04-16  |  12.6 KB  |  723 lines

  1. #!/sbin/sh
  2.  
  3. # Generated by nn release 6.5.0 CURRENT #119 at Jan 11 01:14
  4.  
  5. VERSION="6.5.0 CURRENT #119"
  6. INEWS="/usr/freeware/lib/nn/inews"
  7. INEWS_DIR="/usr/freeware/lib/nn"
  8. UUENVIEW=uuenview
  9. AWK="awk"
  10. NNTP=true
  11. ACTIVE=/usr/spool/news/.nn/ACTIVE
  12. NNTPCACHE=
  13. LOG=/usr/freeware/lib/nn/Log
  14. TMP=${TMPDIR-/usr/tmp}
  15. DB=/usr/spool/news/.nn
  16. BIN=/usr/freeware/bin
  17. LIB=/usr/freeware/lib/nn
  18. AUTH=false
  19. XNEWSREADER=true
  20. INEWSWAIT=0
  21. SYNCHRO=true
  22.  
  23. # ---- end of prefix
  24.  
  25.  
  26. # PREFIX is inserted above this line during Make
  27.  
  28. trap : 2 3
  29.  
  30. PATH=/bin:$PATH
  31.  
  32. # Paramaters transferred from nn via .param file:
  33. #    ART_ID        Article id to cancel
  34. #    GROUP        Group of article to cancel
  35. #    WORK        Temporary file for response (w initial contents)
  36. #    FIRST_ACTION    First action to perform
  37. #    EMPTY_CHECK    [empty-response-check]
  38. #    EDITOR        [editor]
  39. #    ED_LINE        First line of body in WORK file
  40. #    SPELL_CHECKER    [spell-checker]
  41. #    PAGER        [pager]
  42. #    APPEND_SIG    [append-signature]
  43. #    QUERY_SIG    [query-signature]
  44. #    NOVICE        [expert]
  45. #    WAIT_PERIOD     [response-check-pause]
  46. #    RECORD        [mail/news-record]
  47. #    MMDF_SEP    [mmdf-format = ^A^A^A^A]
  48. #    POST        [inews]
  49. #    POST_PIPE    [inews-pipe-input]
  50. #    POSTER_ADR    Reply address for follow-ups
  51. #    MAILER        [mailer]
  52. #    MAILER_PIPE    [mailer-pipe-input]
  53. #    DFLT_ANSW    [response-default-answer]
  54. #    ALIAS_EXPANDER    [mail-alias-expander]
  55. #    CHSET_NAME    [charset]
  56. #    CHSET_WIDTH    Charset width
  57. #    DIST        distribution of cancelled article
  58. #    NNTP_SERVER    nntp-server
  59.  
  60. CC=""
  61.  
  62. case "$1" in
  63. COMPLETE)
  64.   . $HOME/.nn/hold.param
  65.   WORK="$2"
  66.   EMPTY_CHECK=false
  67.   cp $HOME/.nn/hold.work $WORK
  68.   rm -f $HOME/.nn/hold.*
  69.   ;;
  70. *)
  71.   . $HOME/.nn/.param
  72.   OPERATION=$1
  73.   ;;
  74. esac
  75.  
  76. # first we handle 'cancel'
  77.  
  78. case "$OPERATION" in
  79. cancel)
  80.   TRACE="$2"
  81.   CAN=${TRACE}can
  82.  
  83.   echo "Newsgroups: ${GROUP}" > $CAN
  84.   echo "Subject: cmsg cancel $ART_ID" >> $CAN
  85.   echo "Control: cancel $ART_ID" >> $CAN
  86.   if [ $DIST != "none" ] ; then
  87.     echo "Distribution: $DIST" >> $CAN
  88.   fi
  89.   echo "" >> $CAN
  90.   echo "cancel $ART_ID in newsgroup $GROUP" >> $CAN
  91.   echo "" >> $CAN
  92.   echo "This article was cancelled from within NN version $VERSION" >> $CAN
  93.  
  94.   $INEWS -h < $CAN > $TRACE 2>&1
  95.  
  96.   x=$?
  97.   case $x in
  98.   0)
  99.     ;;
  100.   *)
  101.     echo ''
  102.     cat $TRACE
  103.     sleep 2
  104.     ;;
  105.   esac
  106.   rm -f $TRACE
  107.   exit $x
  108.   ;;
  109. post|follow)
  110.   LOOKFOR="Newsgroups:"
  111.   SEND="post"
  112.   SENT="posted"
  113.   SENDPR="p)ost"
  114.   MESSAGE="article"
  115.   ;;
  116. *)
  117.   LOOKFOR="To:"
  118.   SEND="send"
  119.   SENT="sent"
  120.   SENDPR="s)end"
  121.   MESSAGE="letter"
  122.   ;;
  123. esac
  124.  
  125. TRACE=${WORK}T
  126. FINAL=${WORK}F
  127. TEMP=${WORK}M
  128. COPY=""
  129.  
  130. case "$FIRST_ACTION" in
  131. send)
  132.   ;;
  133. *)
  134.   COPY=${WORK}C
  135.   cp $WORK $COPY
  136.   ;;
  137. esac
  138.  
  139. # loop until sent or aborted.
  140.  
  141. loop=true
  142. changed=true
  143. prompt=false
  144. addchset=false
  145.  
  146. pr="a)bort"
  147. if $UUENVIEW -V > /dev/null 2>&1 ; then
  148.   pr="$pr at)tach"
  149. fi
  150. case "$POSTER_ADR" in
  151. ?*)
  152.   pr="$pr c)c"
  153.   ;;
  154. esac
  155. pr="$pr e)dit h)old"
  156. case "$SPELL_CHECKER" in
  157. ?*)
  158.   pr="$pr i)spell"
  159.   ;;
  160. esac
  161. pr="$pr m)ail"
  162. case "$OPERATION" in
  163. post|follow)
  164.   pr="$pr p)ost"
  165.   ;;
  166. esac
  167. pr="$pr r)eedit"
  168. case "$OPERATION" in
  169. post|follow)
  170.   ;;
  171. *)
  172.   pr="$pr s)end"
  173.   ;;
  174. esac
  175. pr="$pr v)iew w)rite"
  176.  
  177. case "$DFLT_ANSW" in
  178.   p*|s*)
  179.     pr1=" ($SEND $MESSAGE)"
  180.     ;;
  181.   "")
  182.     pr1=""
  183.     ;;
  184.   *)
  185.     pr1=" ($DFLT_ANSW)"
  186.     ;;
  187. esac
  188.  
  189. while $loop ; do
  190.   case $changed in
  191.   true)
  192.     case "$FIRST_ACTION" in
  193.     edit)
  194.       ;;
  195.     *)
  196.       # this works for v6/v7/bsd/sysv tr
  197.       sed -e '1,/^$/d' $WORK | tr -d '[\1-\177]' > $TEMP
  198.       if test -s $TEMP ; then
  199.         pr2=" 7)bit"
  200.         case "$CHSET_WIDTH" in
  201.     8)
  202.       cansend=true
  203.       ;;
  204.     *)
  205.       cansend=false
  206.       echo
  207.           echo "Warning: body of $MESSAGE contains 8-bit characters"
  208.           echo "You must delete them or select an 8-bit character set from nn."
  209.           echo "In its current form the $MESSAGE cannot be $SENT."
  210.       ;;
  211.     esac
  212.     case "$CHSET_NAME" in
  213.     ""|unknown)
  214.       addchset=false
  215.       ;;
  216.     *)
  217.       addchset=true
  218.       ;;
  219.     esac
  220.       else
  221.         pr2=""
  222.     cansend=true
  223.     addchset=false
  224.       fi
  225.       rm -f $TEMP
  226.       changed=false
  227.       ;;
  228.     esac
  229.     ;;
  230.   esac
  231.  
  232.   case "$FIRST_ACTION" in
  233.   "")
  234.     case $prompt in
  235.     true)
  236.       echo ''
  237.       echo "$pr$pr2"
  238.       $AWK 'END{printf "Action:'"$pr1"' "}' < /dev/null
  239.       read act
  240.       case "$act" in
  241.       "")
  242.         act="$DFLT_ANSW"
  243.         ;;
  244.       esac
  245.       ;;
  246.     esac
  247.     ;;
  248.   *)
  249.     act="$FIRST_ACTION"
  250.     FIRST_ACTION=""
  251.     ;;
  252.   esac
  253.   prompt=true
  254.  
  255.   case "$act" in
  256.   7*)
  257.     # this works for v6/v7/bsd/sysv tr
  258.     sed '1,/^$/d' $WORK | tr '[\201-\377]' '[\1-\177]' >> $TEMP
  259.     mv $TEMP $WORK
  260.     changed=true
  261.     ;;
  262.  
  263.   at*)
  264.     $AWK 'END{printf "Attach file: "}' < /dev/null
  265.     read thefile
  266.     file=`eval echo $thefile`
  267.     if test ! -r $file ; then
  268.       echo "Can't read $file...."
  269.     else
  270.       if $UUENVIEW -a -b $file < $WORK > $TEMP ; then
  271.         mv $TEMP $WORK
  272.         echo "Attached $file."
  273.         changed=true
  274.       else
  275.         echo "Trouble attaching $file...."
  276.       fi
  277.     fi
  278.     ;;
  279.  
  280.   a*)
  281.     $AWK 'END{printf "Confirm abort: (y) "}' < /dev/null
  282.     read act
  283.     case "$act" in
  284.     ""|y*)
  285.       rm -f $WORK* $COPY
  286.       exit 22
  287.       ;;
  288.     esac
  289.     ;;
  290.  
  291.   c*)
  292.     case "$POSTER_ADR" in
  293.     "")
  294.       echo "Not doing follow-up"
  295.       ;;
  296.     *)
  297.       case $cansend in
  298.       true)
  299.         $AWK 'END{printf "CC: '"$POSTER_ADR"' (y) "}' </dev/null
  300.         read act
  301.         case "$act" in
  302.         ""|"y*")
  303.       echo "Sending copy to poster...."
  304.       CC="$POSTER_ADR"
  305.       final=true
  306.       ;;
  307.         esac
  308.     ;;
  309.       false)
  310.         echo
  311.     echo "Error: body of $MESSAGE contains 8-bit characters"
  312.     echo "You must delete them or select an 8-bit character set from nn."
  313.     echo "In its current form the $MESSAGE cannot be mailed."
  314.     ;;
  315.       esac
  316.       ;;
  317.     esac
  318.     ;;
  319.  
  320.   e*)
  321.     # call editor to enter at line $ED_LINE of work file
  322.  
  323.     case `basename "${EDITOR-vi}"` in
  324.     vi|emacs|emacsclient|pico|joe )
  325.       # Berkeley vi display editor
  326.       # GNU emacs display editor
  327.       # pico display editor
  328.       # joe display editor
  329.       eval ${EDITOR-vi} +$ED_LINE $WORK
  330.       ;;
  331.     ded )
  332.       # QMC ded display editor
  333.       $EDITOR -l$ED_LINE $WORK
  334.       ;;
  335.     uemacs )
  336.       # micro emacs
  337.       $EDITOR -g$ED_LINE $WORK
  338.       ;;
  339.     * )
  340.       # Unknown editor
  341.       $EDITOR $WORK
  342.       ;;
  343.     esac
  344.  
  345.     if test ! -s $WORK ; then
  346.       rm -f $WORK* $COPY
  347.       exit 22
  348.     fi
  349.  
  350.     if $EMPTY_CHECK ; then
  351.       if cmp -s $WORK $COPY ; then
  352.          rm -f $WORK* $COPY
  353.         exit 22
  354.       fi
  355.     fi
  356.  
  357.     changed=true
  358.  
  359.     case "$LOOKFOR" in
  360.     ?*)
  361.       if grep "^$LOOKFOR" $WORK > /dev/null ; then
  362.     :
  363.       else
  364.     echo "Warning: no $LOOKFOR line in $MESSAGE"
  365.       fi
  366.       ;;
  367.     esac
  368.     ;;
  369.  
  370.   h*)
  371.     $AWK 'END{printf "Complete response later: (y) "}' < /dev/null
  372.     read act
  373.     case "$act" in
  374.     ""|y*)
  375.       cp $WORK $HOME/.nn/hold.work
  376.       cp $HOME/.nn/.param $HOME/.nn/hold.param
  377.       echo "OPERATION=$OPERATION" >> $HOME/.nn/hold.param
  378.       case "$COPY" in
  379.       ?*)
  380.         rm -f $COPY
  381.         ;;
  382.       esac
  383.       rm -f $WORK*
  384.       exit 22
  385.       ;;
  386.     esac
  387.     ;;
  388.  
  389.   i*)
  390.     case "$SPELL_CHECKER" in
  391.     "")
  392.       echo "spell-checker not defined"
  393.       ;;
  394.     *)
  395.       $SPELL_CHECKER $WORK
  396.       ;;
  397.     esac
  398.     ;;
  399.  
  400.   m*)
  401.     case $cansend in
  402.     true)
  403.       $AWK 'END{printf "To: "}' </dev/null
  404.       read CC
  405.       case "$CC" in
  406.       ?*)
  407.         echo "Sending copy...."
  408.         final=true
  409.         ;;
  410.       esac
  411.       ;;
  412.     false)
  413.       echo
  414.       echo "Error: body of $MESSAGE contains 8-bit characters"
  415.       echo "You must delete them or select an 8-bit character set from nn."
  416.       echo "In its current form the $MESSAGE cannot be mailed."
  417.       ;;
  418.     esac
  419.     ;;
  420.  
  421.   n*)
  422.     act="abort"
  423.     prompt=false
  424.     ;;
  425.  
  426.   r*)
  427.     $AWK 'END{printf "Undo all changes? (n) "}' < /dev/null
  428.     read act
  429.     case "$act" in
  430.     [yY]*)
  431.       cp $COPY $WORK
  432.       changed=true
  433.       ;;
  434.     esac
  435.     FIRST_ACTION=edit
  436.     ;;
  437.  
  438.   p*|s*)
  439.     case $cansend in
  440.     true)
  441.       loop=false
  442.       final=true
  443.       ;;
  444.     *)
  445.       echo
  446.       echo "Error: body of $MESSAGE contains 8-bit characters"
  447.       echo "You must delete them or select an 8-bit character set from nn."
  448.       echo "In its current form the $MESSAGE cannot be $SENT."
  449.       ;;
  450.     esac
  451.     ;;
  452.  
  453.   v*)
  454.     ${PAGER-cat} $WORK
  455.     ;;
  456.  
  457.   w*)
  458.     $AWK 'END{printf "Append '$MESSAGE' to file: "}' < /dev/null
  459.     read FNAME
  460.     case "$FNAME" in
  461.     ?*)
  462.       { cat $WORK ; echo ; } >> $FNAME
  463.       ;;
  464.     esac
  465.     ;;
  466.  
  467.   y*)
  468.     act="$DFLT_ANSW"
  469.     prompt=false
  470.     ;;
  471.  
  472.   ENV)
  473.     set
  474.     ;;
  475.   esac
  476.  
  477.   case $final in
  478.   true)
  479.     cp $WORK $TEMP
  480.     case $addchset in
  481.     true)
  482.       if grep -i -v "^MIME-Version: " $WORK > /dev/null &&
  483.          grep -i -v "^Content-Type: " $WORK > /dev/null &&
  484.          grep -i -v "^Content-Transfer-Encoding: " $WORK > /dev/null
  485.       then
  486.     echo '/^$/i' > ${TEMP}ed
  487.     echo "MIME-Version: 1.0" >> ${TEMP}ed
  488.     echo "Content-Type: text/plain; charset=$CHSET_NAME" >> ${TEMP}ed
  489.     echo "Content-Transfer-Encoding: 8bit" >> ${TEMP}ed
  490.     echo "." >> ${TEMP}ed
  491.     echo "w" >> ${TEMP}ed
  492.     echo "q" >> ${TEMP}ed
  493.     ed -s $TEMP < ${TEMP}ed >/dev/null 2>&1
  494.     rm -f ${TEMP}ed
  495.       fi
  496.       ;;
  497.     esac
  498.     grep -i -v "^Orig-To: " $TEMP | grep -i -v "^X-Newsreader: " > $FINAL
  499.     rm -f $TEMP
  500.     if $XNEWSREADER ; then
  501.       echo '/^$/i' > ${TEMP}ed
  502.       echo "X-Newsreader: NN version $VERSION" >> ${TEMP}ed
  503.       echo "." >> ${TEMP}ed
  504.       echo "w" >> ${TEMP}ed
  505.       echo "q" >> ${TEMP}ed
  506.       ed -s $FINAL < ${TEMP}ed >/dev/null 2>&1
  507.       rm -f ${TEMP}ed
  508.     fi
  509.     final=false
  510.     ;;
  511.   esac
  512.   
  513.   case "$CC" in
  514.   ?*)
  515.     echo "To: $CC" > $TEMP
  516.     sed -e "s/^To:/X-To:/" $FINAL >>$TEMP
  517.     if $MAILER_PIPE ; then
  518.       $MAILER < $TEMP
  519.       x=$?
  520.     else
  521.       $MAILER $TEMP
  522.       x=$?
  523.     fi
  524.     rm -f $TEMP
  525.     case $x in
  526.     0)
  527.       echo Done
  528.       ;;
  529.     *)
  530.       echo $MAILER failed
  531.       ;;
  532.     esac
  533.     CC=""
  534.     ;;
  535.   esac
  536. done
  537.  
  538. if test $APPEND_SIG = "true" -a -s $HOME/.signature ; then
  539.   case $QUERY_SIG in
  540.   true)
  541.     $AWK 'END{printf "Append .signature? (y) "}' < /dev/null
  542.     read ans
  543.     ;;
  544.   *)
  545.     ans=y
  546.     ;;
  547.   esac
  548.   case "$ans" in
  549.   ""|y*|Y*)
  550.     echo "-- " >> $FINAL
  551.     cat $HOME/.signature >> $FINAL
  552.     ;;
  553.   esac
  554. fi
  555.  
  556. case "$OPERATION" in
  557.   follow|post)
  558.     case $NOVICE in
  559.     true)
  560.       echo "Be patient! Your new $MESSAGE will not show up immediately."
  561.       case "${WAIT_PERIOD-0}" in
  562.     0|1)
  563.           WAIT_PERIOD=2
  564.           ;;
  565.       esac
  566.       ;;
  567.     esac
  568.     ;;
  569. esac
  570.  
  571. {
  572.   trap 'echo SIGNAL' 1 2 3
  573.  
  574.   LOGNAME="${LOGNAME-$USER}"
  575.   case "$LOGNAME" in
  576.   "")
  577.     set `who am i`
  578.     LOGNAME="$1"
  579.     ;;
  580.   esac
  581.  
  582.   case "$RECORD" in
  583.   ?*)
  584.     {
  585.       # keep a copy of message in $RECORD (in mail format)
  586.       set `date`
  587.       case "$MMDF_SEP" in
  588.       ?*)
  589.         echo "$MMDF_SEP"
  590.         ;;
  591.       esac
  592.       case $3 in
  593.       [0-9])
  594.         echo From $LOGNAME $1 $2 " $3" $4 $6 $7
  595.         ;;
  596.       *)
  597.         echo From $LOGNAME $1 $2 $3 $4 $6 $7
  598.         ;;
  599.       esac
  600.       echo "From: $LOGNAME"
  601.       cat $FINAL
  602.       echo "$MMDF_SEP"
  603.     } >> "$RECORD"
  604.     ;;
  605.   esac
  606.  
  607.   case "$OPERATION" in
  608.  
  609.     reply|forward|mail)
  610.       case "$ALIAS_EXPANDER" in
  611.       ?*)
  612.     $ALIAS_EXPANDER $FINAL
  613.     ;;
  614.       esac
  615.       case $MAILER_PIPE in
  616.       true)
  617.     $MAILER < $FINAL
  618.     x=$?
  619.     ;;
  620.       *)
  621.     $MAILER $FINAL
  622.     x=$?
  623.     ;;
  624.       esac
  625.       case $x in
  626.       0)
  627.     ;;
  628.       *)
  629.     echo $MAILER failed
  630.     ;;
  631.       esac
  632.       ;;
  633.  
  634.     follow|post)
  635.       {
  636.     case $POST_PIPE in
  637.     true)
  638.           $POST < $FINAL 2>&1
  639.           x=$?
  640.           ;;
  641.     *)
  642.           $POST $FINAL 2>&1
  643.           x=$?
  644.           ;;
  645.     esac
  646.     case $x in
  647.     0)
  648.           sleep $INEWSWAIT
  649.           ;;
  650.     *)
  651.           echo $INEWS failed
  652.           ;;
  653.     esac
  654.       } | sed \
  655.         -e "/spooled for later processing/d" \
  656.         -e "/problem has been taken care of/d" \
  657.         -e "/mailing your article to/d" \
  658.         -e "/being mailed to/d" \
  659.             -e "/mailed to the moderator/d" \
  660.         -e "/is moderated/d"
  661.       ;;
  662.  
  663.     *)
  664.       echo "Invalid operation: $OPERATION -- help"
  665.       OPERATION="nn response operation"
  666.       ;;
  667.   esac > $TRACE 2>&1
  668.  
  669.   if test -s $TRACE ; then
  670.     if test -s $HOME/dead.letter ; then
  671.       cat $HOME/dead.letter >> $HOME/dead.letters
  672.       echo '' >> $HOME/dead.letters
  673.     fi
  674.     cat $WORK > $HOME/dead.letter
  675.  
  676.     # Gripe: Error-report is lost if REC_MAIL was the problem
  677.     {
  678.       echo "To: $LOGNAME"
  679.       echo "Subject: $OPERATION failed"
  680.       echo ""
  681.       cat $TRACE
  682.       echo ""
  683.       echo "Your response has been saved in ~/dead.letter"
  684.       echo ""
  685.       echo "Your $MESSAGE follows:"
  686.       cat $WORK
  687.     } > $TEMP
  688.     case $MAILER_PIPE in
  689.     true)
  690.       $MAILER < $TEMP
  691.       ;;
  692.     *)
  693.       $MAILER $TEMP
  694.       ;;
  695.     esac
  696.     rm -f $TEMP
  697.   else
  698.     # keep TRACE file a little while for test at end of script
  699.     sleep 3
  700.   fi
  701.   rm -f $WORK* $COPY
  702.  
  703. } > /dev/null 2>&1 &
  704.  
  705. # if in synchronous mode, then wait untill it's done.  Most useful for INN.
  706. if $SYNCHRO ; then
  707.   wait
  708. else
  709.   case "${WAIT_PERIOD-0}" in
  710.   0)
  711.     ;;
  712.   *)
  713.     sleep $WAIT_PERIOD
  714.     ;;
  715.   esac
  716. fi
  717.  
  718. if test -s "$TRACE" ; then
  719.   exit 1
  720. fi
  721.  
  722. exit 0
  723.